[小ネタ] BigQueryで区切り文字のない年月日(YYYYMMDD)から日付型(YYYY-MM-DD)にする方法
Snowflakeで区切り文字のない年月日(YYYYMMDD)から日付型(YYYY-MM-DD)にする方法を書いて、BigQueryでは、こういう場合、どのようにして変換するのかが気になったので調べました。
BigQueryの公式ドキュメントの日付に関するページをみたところ、PARSE_DATE
という文字列の日付をDATQueryE型にする関数がありました。
すると、なんと!!
そのままのケースが紹介されていました。(うう..企画倒れ...)
SELECT PARSE_DATE("%Y%m%d", "20081225") as parsed; +------------+ | parsed | +------------+ | 2008-12-25 | +------------+
でも、諦めません。そう数値で入っている場合にはどうするのか問題があります。
BigQueryでは型を変換する際にCAST
関数を使用します。これで数値型の年月日(YYYYMMDD)を文字列に変換して上述のPARSE_DATE
関数に入れてみました。
SELECT PARSE_DATE("%Y%m%d", CAST(20210319 AS STRING))
見事、日付型(YYYY-MM-DD)にすることができました。
おまけ
PARSE_DATEはPARSE_DATE(format_string, date_string)
と2つ要素が必要なのですが、date_string
の形式に合わせてformat_string
を1つまたは複数組み合わせる必要があります。
format_string
も公式ドキュメントで紹介されています。